package com.school.sports.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableLogic;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;

/**
 * 文件信息表实体类
 * 用于管理系统中的各类文件，包括证书、图片、文档等
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName("file_info")
public class FileInfo {
    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 文件名
     */
    private String fileName;

    /**
     * 文件原始名称
     */
    private String originalName;

    /**
     * 文件扩展名
     */
    private String fileExtension;

    /**
     * 文件路径（相对于上传目录的路径）
     */
    private String filePath;

    /**
     * 文件完整URL
     */
    private String fileUrl;

    /**
     * 文件大小（字节）
     */
    private Long fileSize;

    /**
     * 文件类型：image, document, certificate, other
     */
    private String fileType;

    /**
     * 文件MIME类型
     */
    private String mimeType;

    /**
     * 文件MD5值（用于重复文件检测）
     */
    private String fileMd5;

    /**
     * 上传用户ID
     */
    private Long uploadUserId;

    /**
     * 关联实体类型（如：award, enrollment, user等）
     */
    private String relatedType;

    /**
     * 关联实体ID
     */
    private Long relatedId;

    /**
     * 文件状态：normal, deleted, processing
     */
    private String status;

    /**
     * 文件描述
     */
    private String description;

    /**
     * 逻辑删除标记：0-未删除，1-已删除
     */
    @TableLogic
    private Integer deleted;

    /**
     * 创建时间
     */
    private LocalDateTime createdAt;

    /**
     * 更新时间
     */
    private LocalDateTime updatedAt;

    /**
     * 上传用户姓名（关联查询时使用）
     */
    private String uploadUserName;
}